import { PageVO } from '@/common/vo';

/**
 * 数据监控规则表格-查询条件
 */
export interface MonitorRuleDTO {
    codeOrName: string,
    // id: string, // id
    idMH: string, // id模糊搜索
    ruleName: string, // 监控规则名称
    statuss?: string[],
    remark?: string,
    dtCtUser?: string,
    dtMdUser?: string,
    sort?,
    paging?
}

/**
 * 数据监控规则表格
 */
export interface MonitorRuleVO {
    id: string, // id
    ruleName: string, // 监控规则名称
    status: string, // 是否启动 0-是 1-否
    remark: string, // 备注
    dtCtTime: number, // 创建时间
    dtCtDate: number, // 创建日期
    dtCtUser: string, // 创建人
    dtMdTime?: number, // 修改时间
    dtMdDate?: number, // 修改日期
    dtMdUser?: string, // 修改人
    sum?
}

export interface MonitorRuleRepVO {
    [x: string]: any;
    list: MonitorRuleVO[],
    paging: PageVO
}

/**
 * 数据监控规则-提交表单
 */
export interface MonitorRuleSubmitFormDTO {
    ruleName: string, // 监控规则名称
    status: string, // 是否启动(0：禁用，1：启用)
    remark: string, // 备注
    taskList: MonitoRuleTaskVO[], // 监控频率
    dataAggregatorList: AggregatorVO[],
    dataComparatorList: ComparatorVO[],
    dataAlerterList: AlerterVO[],
    showJson: string // 可视化JSON
}

/**
 * CRON表达式
 */
export interface MonitoRuleTaskVO {
    scheduleType: string, // 默认 cron
    expression: string, // 表达式
}

/**
 * 数据监控规则(数据采集)
 */
export interface AggregatorVO {
    monitorRuleId?: number, // 监控规则ID
    gatherName: string, // 采集器名称
    processType: string, // 处理类型
    datasourceId: string, // 数据源ID
    prefix: string, // 前缀
    requestType?: string, // 请求方式
    logicContext: string | string[], // 取数逻辑（如SQL语句、api接口地址）  SQL|API直接string  数据合并|列选择 string[]
    logicParam: any, // 参数列表
    sort?: number, // id
}

/**
 * 数据监控规则(数据比较处理)
 */
export interface ComparatorVO {
    monitorRuleId?: number, // 监控规则ID
    compareName: string, // 比较器名称
    checkRuleContext: string, // 数据检查规则
    flagColumnList?: string[], // 染红的列索引
    flagColumn: string, // 染红的列索引 JSON
}

/**
 * 数据监控规则(数据告警处理)
 */
export interface AlerterVO {
    monitorRuleId?: number, // 监控规则ID
    alertrtName?: string,
    alerterType: string, // 告警渠道
    receiveUser: string, // 接收人 JSON
    copyUser: string, // 抄送人 JSON
    receiveUserList?: string[], // 接收人
    copyUserList?: string[], // 抄送人
    title: string, // 标题
    context: string, // 邮件正文
    sendRule: string, // 发送规则
    beginTime: number, // 告警时段-开始时间
    endTime: number, // 告警时段-结束时间
}
